// 抛出错误的包
const assert = require("http-assert")
// 设置token的包
const jwt = require('jsonwebtoken')
// 引入自定义的秘钥 设置和解密token的
const {SecretKey} = require('../SecretKey')
// 引入模型
const AdminUser = require('../models/AdminUser')

module.exports = () => (async (req, res) => {
  const {username, password} = req.body
  // 根据用户名找用户
  const user = await AdminUser.findOne({username}).select('+password')
  // 校验用户名
  assert(user,422,'用户不存在')
  // if(!user) {
  //   return res.status(422).send({'message': '用户不存在'})
  // }
  // 校验密码
  const isValid = require('bcrypt').compareSync(password,user.password)
  assert(isValid, 422, '密码错误')
  // if(!isValid) {
  //   return res.status(422).send({'message': '密码错误'})
  // }

  // 返回token
  const token =  jwt.sign({id: user._id}, SecretKey)
  res.send({message: '登陆成功', token })
})
